Çàêðûòü îêíî         Ñïèñîê äðóãèõ äîêóìåíòîâ ÏÝÂÌ "Àãàò"

%PAGE

10. ÁAÇÈCHÛE ÏOÄÏPOÃPAMMÛ BBOÄA-BÛBOÄA.

10.1. Haçía÷eíèe.

Áaçècíûe ïoäïpoãpaììû ââoäa-âûâoäa (Input-Output SUBroutines), â äaëüíeéøeì - IOSUB, oáecïe÷èâaþò ìèíèìaëüíûe âoçìoæíocòè opãaíèçaöèè äèaëoãa â cècòeìe "Øêoëüíèöa" c ècïoëüçoâaíèeì êëaâèaòópû è òeëeìoíèòopa - ócòpoécòâ, âxoäÿùèx â ìèíèìaëüíóþ êoíôèãópaöèþ òexíè÷ecêèx cpeäcòâ ÝBM "AÃAT". Ýòè ïoäïpoãpaììû ïoçâoëÿþò ïoäíÿòü ópoâeíü ïpoãpaììèpoâaíèÿ ía acceìáëepe, oáëeã÷aÿ âûïoëíeíèe ÷acòo ècïoëüçóeìûx äeécòâèé.

Ocíoâíûe ôóíêöèè, âûïoëíÿeìûe IOSUB, òaêoâû:

\Bâoä:\

%LISTM

-ââoä oäèío÷íoão cèìâoëa c êëaâèaòópû;

-ââoä còpoêè cèìâoëoâ c êëaâèaòópû c pacïoçíaâaíèeì peäaêòèpóþùèx cèìâoëoâ;

-òe æe ôopìû ââoäa c ècïoëüçoâaíèeì ïpoãpaììû ââoäa, çaäaííoé ïoëüçoâaòeëeì, â ò.÷. ââoä c äpóãoão ócòpoécòâa ïpè coáëþäeíèè pÿäa ïpaâèë;

-ïepeêoäèpoâêa cèìâoëoâ ía ââoäe (cëèÿíèe oäèíaêoâûx ïo íaïècaíèþ póccêèx è ëaòèícêèx áóêâ);

-âûïoëíeíèe ôóíêöèoíaëüíûx câoécòâ cèìâoëoâ ía ââoäe, ò.e. cïeöèaëüíûx äeécòâèé â cëó÷ae ïocòóïëeíèÿ òoão èëè èíoão cèìâoëa.

%ENDL

\Bûâoä:\

%LISTM

-âûâoä oäèío÷íoão cèìâoëa ía ýêpaí â oäíoì èç äâóx òeêcòoâûx peæèìoâ;

-âûâoä c ècïoëüçoâaíèeì ïoäïpoãpaììû âûâoäa cèìâoëa, çaäaííoé ïoëüçoâaòeëeì, â ò.÷. âûâoä ía äpóãoe ócòpoécòâo;

-âûïoëíeíèe ôóíêöèoíaëüíûx câoécòâ cèìâoëoâ ía âûâoäe; cþäa oòíocÿòcÿ:

%LISTM

-óïpaâëeíèe öâeòaìè ïpè âûâoäe,

-óïpaâëeíèe ïoçèöèeé âûâoäa,

-óïpaâëeíèe coäepæaùeécÿ ía ýêpaíe èíôopìaöèeé.

%ENDL

%ENDL

Míoãèe âoçìoæíocòè IOSUB cïeöèaëüío oôopìëeíû â âèäe ïoäïpoãpaìì äëÿ óäoácòâa èx ècïoëüçoâaíèÿ â acceìáëepíoé ïpoãpaììe. Hèæe, ïpè áoëee äeòaëüíoì çíaêoìcòâe c IOSUB ïpeäïoëaãaeòcÿ ïapaëëeëüíoe çíaêoìcòâo c èx ècxoäíûì òeêcòoì, oáëeã÷aþùeì ïoíèìaíèe ïpèíöèïoâ èx paáoòû.

10.2. Aïïapaòíûe è ïpoãpaììèpóeìûe âoçìoæíocòè âeäeíèÿ äèaëoãa.

\Aïïapaòíûé ââoä c êëaâèaòópû\. Ocóùecòâëÿeòcÿ c ïoìoùüþ 3 ïceâäoÿ÷eeê:

%LISTD

-KBD (¤C000) - ïpè íaæaòèè êëaâèøè cþäa ïoïaäaeò ee êoä (êoä ââeäeííoão cèìâoëa) \c ócòaíoâëeííûì còapøèì áèòoì\. Këaâèøè ìoãóò ïocûëaòü oò 1 äo 3 êoäoâ â çaâècèìocòè oò peãècòpoâoé êëaâèøè, c êoòopoé oía íaæaòa. Peãècòpû PÓC è LAT ía ïocûëaeìûe êëaâèøaìè êoäû íe âëèÿþò.

-KBDSTRB (¤C010) - ïpè oápaùeíèè ê ýòoé ÿ÷eéêe còapøèé áèò KBD cápacûâaeòcÿ â 0.

-KBDREG (¤C063) - còapøèé áèò=0, ecëè ócòaíoâëeí peãècòp PÓC, è paâeí 1, ecëè peãècòp LAT. Oía äaeò âoçìoæíocòü \ïpoãpaììío\ oòäaâaòü ïpeäïo÷òeíèe òoìó èëè èíoìó peãècòpó ïpè ââoäe êëaâèø.

%ENDL

Ïpoöeäópa oæèäaíèÿ ââoäa cèìâoëa, òaêèì oápaçoì, â ïpocòeéøeì cëó÷ae òaêoâa:

      BIT KBDSTRB  ;cápocèòü áèò KBD
 READ LDA KBD
      BPL READ     ;ecëè cò.áèò cápoøeí - ââoäa íe áûëo
      ...          ;êoãäa ócòaíoâèòcÿ - cèìâoë ââeäeí

Oïpoc, áûëa ëè íaæaòa êëaâèøa, ìoæeò âûãëÿäeòü òaê:

      LDA KBD
      BPL HET
      BMI ÄA

\Aïïapaòíûé âûâoä ía ýêpaí\. Óïpaâëeíèe âûâoäoì ía ýêpaí câoäèòcÿ ê ïpoãpaììíoé oápaáoòêe oápaça ýêpaía â ïaìÿòè. Ýòo oáëacòü paçìepoì 2 Káaéòa, coäepæèìoe êoòopoé ìoæeò aïïapaòíûìè cpeäcòâaìè oòoápaæaòücÿ ía ýêpaí â oäíoì èç òeêcòoâûx peæèìoâ (ÃHC èëè ÃÖC). Bûâoä cèìâoëa paâíocèëeí eão çaïècè â íeêoòopóþ ÿ÷eéêó ýòoé oáëacòè.

Áaçoâûé aäpec (ÁA) ýêpaííoé ïaìÿòè äoëæeí áûòü êpaòeí ¤800. Ecëè oí, êpoìe òoão, êpaòeí ¤1000, òo â peæèìe ÃHC èçoápaæaþòcÿ ÷epíûe cèìâoëû ía áeëoì ôoíe, èía÷e - íaoáopoò. Còpoêa ýêpaía oòoápaæaeòcÿ 64 áaéòaìè, ïocëeäoâaòeëüíocòü oòoápaæeíèÿ còpoê â ïaìÿòè cooòâeòcòâóeò èx ïopÿäêó ía ýêpaíe.

B peæèìe ÃHC êaæäoìó cèìâoëó còpoêè cooòâeòcòâóeò oäèí áaéò â ïaìÿòè, ãäe xpaíèòcÿ eão êoä. Aäpec ïoçèöèè X â còpoêe Ó (Ó - câepxó, oòc÷eò X è Ó âeäeòcÿ c 0) çaäaeòcÿ ôopìóëoé:

ÁA + 64 * Ó + X .

B peæèìe ÃÖC êaæäoìó cèìâoëó cooòâeòcòâóeò 2 áaéòa: â 1-ì òaêæe xpaíèòcÿ eão êoä, a 2-é oïpeäeëÿeò öâeòíocòü cèìâoëa:

   áèòû 2-0   - öâeò (8 öâeòoâ),
   áèòû (5,3) = 00 - èíâepcíûé cèìâoë,
                01 - ìèãaþùèé cèìâoë,
                10,11 - íopìaëüíûé cèìâoë.

Aäpec ïoçèöèè X â còpoêe Ó (ïpè òex æe ócëoâèÿx) oïpeäeëÿeòcÿ ïo ôopìóëe

      ÁA + 64 * Ó + 2 * X  .

Öâeòíocòü xpaíèòcÿ â cëeäóþùeì áaéòe.

\Boçìoæíocòü ââoäa c ýêpaía\. ×èòaÿ áaéò ýêpaííoé ïaìÿòè, ìoæío oïpeäeëèòü, êaêoé cèìâoë èçoápaæeí â íeêoòopoé ïoçèöèè ýêpaía, a òaêæe eão öâeòíocòü.

\Oêío äèaëoãa\. IOSUB äoïócêaþò âeäeíèe äèaëoãa íe ía âceé ïëoùaäè ýêpaía, a â oãpaíè÷eííoé ïpÿìoóãoëüíoé oáëacòè, íaçûâaeìoé \oêíoì\. Ocòaëüíóþ ÷acòü ýêpaía ïpè ýòoì oíè íe çaòpaãèâaþò.

\Teêóùaÿ ïoçèöèÿ\. Äëÿ opãaíèçaöèè äèaëoãa ââeäeío ïoíÿòèe òeêóùeé ïoçèöèè â oêíe. Bo âpeìÿ âûâoäa oía óêaçûâaeò, ãäe áóäeò âûâeäeí o÷epeäíoé cèìâoë, a âo âpeìÿ ââoäa oïpeäeëÿeò ïoçèöèþ \êópcopa\, ïoýòoìó ÷aùe oía äëÿ eäèíooápaçèÿ íaçûâaeòcÿ \ïoçèöèeé êópcopa\.

Ïoçèöèÿ êópcopa ìeíÿeòcÿ ïpè âûâoäe êaæäoão cèìâoëa òaê, ÷òoáû opãaíèçoâaòü ecòecòâeííoe çaïoëíeíèe ýêpaía cèìâoëaìè cëeâa íaïpaâo câepxó âíèç; ïpè íeoáxoäèìocòè ýêpaí "cäâèãaeòcÿ" ââepx, ocâoáoæäaÿ ïócòóþ còpoêó (òeêcò "óïoëçaeò" ââepx). Ëþáûe äpóãèe ïepeìeùeíèÿ êópcopa peaëèçoâaíû êaê ôóíêöèoíaëüíaÿ íaãpóçêa ía óïpaâëÿþùèe cèìâoëû ïpè èx âûâoäe (íaïpèìep, cèìâoë "ÓÏP-Z" cìeùaeò êópcop ía còpoêó âíèç).

\Áóôep ââoäa còpoêè.\ 2-ÿ còpaíèöa OÇÓ ècïoëüçóeòcÿ IOSUB äëÿ íaêoïëeíèÿ còpoêè cèìâoëoâ, ââoäèìoé ïoäïpoãpaììoé GETLN.

10.3. Ïocòoÿííûe ïapaìeòpû äèaëoãa.

Cocòoÿíèe äèaëoãa ïoëíocòüþ oïpeäeëÿeòcÿ íecêoëüêèìè ïapaìeòpaìè, êoòopûe xpaíÿòcÿ â cëeäóþùèx ÿ÷eéêax íóëeâoé còpaíèöû:

%LISTL

-ocíoâíûe ïapaìeòpû:

%LISTM

-TXPAGE (¤A6) - íoìep ía÷aëüíoé còpaíèöû ýêpaííoé ïaìÿòè (còapøèé áaéò ÁA);

-INVFLG (¤32) - còapøèé áèò - peæèì äèaëoãa: (0-ÃÖC, 1-ÃHC), ocòaëüíûe èìeþò cìûcë òoëüêo â peæèìe ÃÖC è oïpeäeëÿþò öâeòíocòü cèìâoëa (ôaêòè÷ecêè, coäepæèìoe INVFLG çaïècûâaeòcÿ âo 2-é áaéò ïpeäcòaâëeíèÿ cèìâoëa ía ýêpaíe);

-WNDLFT (¤20) - ëeâûé oòcòóï oêía: paccòoÿíèe ìeæäó ëeâûìè êpaÿìè oêía è ýêpaía \â áaéòax\ (äëÿ ÃHC - ýòo ÷ècëo cèìâoëoâ, äëÿ ÃÖC - äâoéíoe ÷ècëo);

-WNDWDTH (¤21) - øèpèía oêía \â áaéòax\;

-WNDTOP (¤22) - âepxíÿÿ ãpaíèöa oêía (paccòoÿíèe oò 0 còpoêè ýêpaía);

-WNDBTM (¤23) - íèæíÿÿ ãpaíèöa oêía (paccòoÿíèe oò 0 còpoêè ýêpaía);

-CH (¤24) - ïoçèöèÿ êópcopa â còpoêe (oò ëeâoão êpaÿ \oêía\);

-CV (¤25) - òeêóùaÿ còpoêa (âepòèêaëüíaÿ ïoçèöèÿ êópcopa), c÷èòaÿ c 0 oò âepxíeé còpoêè \ýêpaía\.

-CSWL,CSWH (¤36-37) - aäpec ïoëüçoâaòeëücêoé ïoäïpoãpaììû âûâoäa cèìâoëa; â IOSUB ýòó ôóíêöèþ âûïoëíÿeò COUT1;

-KSWL,KSWH (¤38-39) - aäpec ïoëüçoâaòeëücêoé ïoäïpoãbpaììû ââoäa cèìâoëa; â IOSUB ýòó ôóíêöèþ âûïoëíÿeò KEYIN.

%ENDL

%AREA 19
******************************************
*           ^        ^         ^         *
*           !        !         !         *
*    WNDTOP !     CV !         ! WNDBTM  *
*           !        !         !         *
*           v        !         !         *
*         !----------!------!  !         *
*         ! OKHO     !      !  !         *
*         !          !      !  !         *
*         !          v      !  !         *
*         !<---CH--->       !  !         *
*  WNDLFT !                 !  !         *
*<------->!                 !  !         *
*         !<----WNDWDTH---->!  !         *
*         !_________________!  v         *
*                                        *
******************************************

Pèc.10.1. Çaäaíèe oêía è ïoçèöèè êópcopa.

-âcïoìoãaòeëüíûe ïapaìeòpû:

%LISTM

-BASL,BASH (¤28-29) - aäpec ía÷aëa òeêóùeé còpoêè \oêía\; âû÷ècëÿeòcÿ êaæäûé paç ÿâío ïpè cìeíe çía÷eíèÿ CV; ècïoëüçóeòcÿ äëÿ óäoácòâa èíäeêcíoão äocòóïa ê ïoçèöèè êópcopa;

-RNDL,RNDH (¤4E-4F) - cëó÷aéíoe ÷ècëo, èçìeíÿeòcÿ â KEYIN â òeëe öèêëa oæèäaíèÿ ââoäa êëaâèøè;

-PROMPT (¤33) - cèìâoë-ïpèãëaøeíèe êo ââoäó còpoêè (GETLN).

%ENDL

%ENDL

Çàêðûòü îêíî         Ñïèñîê äðóãèõ äîêóìåíòîâ ÏÝÂÌ "Àãàò"